package de.bht.fb6.mobisand.avoidlist.persistence.local;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * Erweiterung der SQLiteOpenHelper Klasse um unsere eigene Datenbank zu verwalten.
 * 
 * @author Bruno Kirschner, Mario Dörwald
 * @since 13. Jan. 2013
 */
public class LocalDatabaseOpenHelper extends SQLiteOpenHelper {

	////////////////////////////// Attribute ////////////////////////////////////////////////

	/** Name der Tabelle mit den ToAvoid Elementen **/
	public static String TABLE_NAME = "toAvoid";
	
	////////////////////////////// Konstruktoren /////////////////////////////////////////////
	
	/**
	 * Konstruktor der die von der Elternklasse benötigten Parameter übernimmt und
	 * weiter vermittelt. Dieser Konstruktor wird nur benötigt da es keinen Standardkonstruktor
	 * in der abstrakten Elternklasse gibt.
	 *  
	 * @param context
	 * 	Aktueller Context aus dem das Objekt heraus erzeugt werden soll.
	 * @param name
	 * 	Name der Datenbank, die hier verwaltet werden soll
	 * @param factory
	 * 	Spezielle Fabrik um Cursor zu erzeugen (null nutzt die Standardfabrik)
	 * @param version
	 * 	Versionsnummer der Datenbank
	 */
	public LocalDatabaseOpenHelper(final Context context,final String name,
			final CursorFactory factory,final int version) {
		super(context, name, factory, version);
	}
	
	////////////////////// öffentliche Methoden //////////////////////////////////////////////////
	
	@Override
	public void onCreate(final SQLiteDatabase db) {
		/**
		 * Query mit dessen Hilfe unsere Datenbank erzeugt wird.
		 * Hier wird der selbe Aufbau übernommen dem die ToAvoid Elemente bereits folgen.
		 */
        String createQuery = "CREATE TABLE "+TABLE_NAME+" (_id integer primary key autoincrement, name, description TEXT, avoided, importance int, avoidanceDate);";
        db.execSQL(createQuery);
	}
	
	@Override
	public void onUpgrade(final SQLiteDatabase db,final int oldVersion,final int newVersion) {
		/** Wird ausgeführt sollte die Datenbank ein Upgrade durchlaufen **/
	}
}
